package com.atguigu.utils;

import org.apache.ibatis.io.Resources;
import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.session.SqlSessionFactory;
import org.apache.ibatis.session.SqlSessionFactoryBuilder;

import java.io.IOException;
import java.io.InputStream;

/**
 * projectName: com.atguigu.utils
 *
 * @author: 赵伟风
 * description: 创建获取和创建sqlSession对象
 *   工具类 （支撑业务的使用） -》 业务类 （一串连贯的业务）
 *
 *   1. 读取配置文件 2.new SqlSessionFactoryBuilder  3.SqlSessionFactory  4.sqlSession
 */
public class SqlSessionUtils {

    private static SqlSessionFactory sqlSessionFactory;

    static {
        InputStream ips = null;
        try {
            ips = Resources.getResourceAsStream("mybatis-config.xml");
        } catch (IOException e) {
            throw new RuntimeException(e);
        }
        //2  创建缓存配置文件对象SqlSessionFactory
        sqlSessionFactory = new SqlSessionFactoryBuilder().build(ips);
    }

    //工具类 -> 建议使用static
    //方法 ->  sqlSession
    //不开启自动提交 DQL
    public static SqlSession openSession(){
        return sqlSessionFactory.openSession();
    }

    //开启自动提交 DML
    public static SqlSession openAutoCommitSession(){
        return sqlSessionFactory.openSession(true);
    }
}
